<?php
    function checkTableOneFiled($ans1,$ans2,$v2,$k1,$k2)
    {
        if(!array_key_exists($k2,$ans2[$k1]))
            return array('type'=>'字段缺失','k1'=>$k1,'k2'=>$k2);
        else if(is_float($v2)&&is_float($ans2[$k1][$k2]))
        {
            if(abs($ans2[$k1][$k2]-$v2)>1e-4)
                return array('type'=>'小数不同','k1'=>$k1,'k2'=>$k2);
        }else if((string)$v2!==(string)$ans2[$k1][$k2])
            return array('type'=>'答案不同','k1'=>$k1,'k2'=>$k2);
        return true;
    }

    function checkTableOneByKey(array $ans1,array $ans2)
    {
        if(count($ans1)!=count($ans2))
            return array('type'=>'长度不同','c1'=>count($ans1),'c2'=>count($ans2));
        foreach($ans1 as $k1=>$v1)
            foreach($v1 as $k2=>$v2)
                if(is_string($k2))
                    if(($_=checkTableOneFiled($ans1,$ans2,$v2,$k1,$k2))!==true)
                        return $_;
        return true;
    }

    function checkTableOneByOrder(array $ans1,array $ans2)
    {
        if(count($ans1)!=count($ans2))
            return array('type'=>'长度不同','c1'=>count($ans1),'c2'=>count($ans2));
        foreach($ans1 as $k1=>$v1)
            foreach($v1 as $k2=>$v2)
                if(is_int($k2))
                    if(($_=checkTableOneFiled($ans1,$ans2,$v2,$k1,$k2))!==true)
                        return $_;
        return true;
    }

    function checkTableByKey($ans1,$ans2)
    {
        if(is_array($ans1)&&is_array($ans2))
        {
//          if(($_=checkTableOneByKey($ans1,$ans2))!==true) return $_;
            return checkTableOneByKey($ans2,$ans1);
        }
        return true;
    }

    function checkTableByOrder($ans1,$ans2)
    {
        if(is_array($ans1)&&is_array($ans2))
        {
//          if(($_=checkTableOneByOrder($ans1,$ans2))!==true) return $_;
            return checkTableOneByOrder($ans2,$ans1);;
        }
        return true;
    }

    function checkTable($ans1,$ans2)
    {
        if(is_array($ans1)&&is_array($ans2))
        {
            if(checkTableByOrder($ans1,$ans2)===true) return true;
            return checkTableByKey($ans1,$ans2);
        }
        return true;
    }